#ifndef __WD_Publisher_HPP__
#define __WD_Publisher_HPP__

#include <string>
using std::string;

// 消息队列产品使用rabbitmq，部署在docker中，基于生产者-消费者模型
// C++从代码层面使用rabbitmq所需要安装的第三方库，前置库为rabbitmq-c（C使用）
#include <SimpleAmqpClient/SimpleAmqpClient.h>

using AmqpClient::BasicMessage;
using AmqpClient::Channel;

class Publisher
{
public:
	Publisher()
		: _channel(Channel::Create()) // Create()无参构造默认使用guest:guest@127.0.0.1:5672
	{
	}

	void doPublish(const string &exchange, const string &routingkey, const string &msg)
	{
		// 创建了一个消息
		BasicMessage::ptr_t message = BasicMessage::Create(msg);
		// 把消息发布给交换器
		_channel->BasicPublish(exchange, routingkey, message);
	}

	~Publisher() {}

private:
	// 创建一个channel
	Channel::ptr_t _channel;
};

#endif
